package xkp.lesson5;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import xkp.lesson1.Person;

public class Test反射2 {
	public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
		//1、我们可以通过反射获取任意一个Class对象中的成员变量/成员方法,静态/非静态
		//2、如果去使用这些非静态成员变量/调用成员方法(非静态成员变量/成员方法必须要依赖对象存在)
		//2.1 成员变量/成员方法一定是属于哪个对象  必须要依赖对象才行
		//3、如果是静态成员变量/成员方法又如何去调用(不需要依赖对象的)
		
		//获取Person的Class对象
		Class class1 = Class.forName("xkp.lesson1.Person");
		//通过名称获取该class1对象中的成员变量/成员方法
		
		//方法要依赖名称+参数列表
		Method methodFun1 = class1.getMethod("fun1", String.class);
		Method methodFun2 = class1.getMethod("fun1");
		methodFun2.invoke(null, null);
		//如何调用方法 ？？？
		//1、先指定这是谁的方法
		//创建对象
		Object object = class1.getConstructor(null).newInstance(null);
		System.out.println(object instanceof Person);
		methodFun1.invoke(object, "张三");
			
	}
}
